package com.woniu.teachmall.controller;

import com.woniu.teachmall.entity.Goods;
import com.woniu.teachmall.entity.User;
import com.woniu.teachmall.service.GoodsService;
import jakarta.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

@Controller
public class IndexController {

    // 注入商品服务，用于处理商品相关的业务逻辑
    @Autowired
    private GoodsService goodsService;

    // 定义每页显示商品数量
    private static int pageSize = 5;

    /**
     * 进入到首页
     * @param page 当前页码，默认从第1页开始
     * @param searchName 搜索框输入的商品名称，默认为空
     * @param model 用于向视图传递数据
     * @param session 当前用户的会话信息
     * @return 首页的视图
     */
    @RequestMapping("/")
    public String index(@RequestParam(defaultValue = "1") int page,
                        @RequestParam(defaultValue = "") String searchName,
                        Model model,
                        HttpSession session) {

        // 从会话中获取当前登录的用户
        User user = (User) session.getAttribute("loginUser");

        // 如果用户未登录，重定向到登录页面
        if (user == null) {
            return "redirect:/user/login";
        }

        // 获取符合搜索条件的商品总记录数
        long total = goodsService.count(searchName);

        // 计算总页数
        int totalPages = (int) Math.ceil((double) total / pageSize);

        // 确保页码在有效范围内
        if (page < 1) page = 1;
        if (page > totalPages) page = totalPages;

        // 获取当前页的商品列表
        List<Goods> goodsList = goodsService.findByPage(page, pageSize, searchName);

        // 将商品列表、当前页码、总页数和总记录数传递给视图
        model.addAttribute("goodList", goodsList);
        model.addAttribute("currentPage", page);
        model.addAttribute("totalPages", totalPages);
        model.addAttribute("total", total);

        // 返回首页视图
        return "index";
    }
}
